package com.smart.community.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.smart.community.user.entity.Captcha;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 验证码Mapper接口
 * 
 * @author Wu.Liang
 * @since 2024-12-21
 */
@Mapper
public interface CaptchaMapper extends BaseMapper<Captcha> {

    /**
     * 根据验证码ID查询验证码
     * 
     * @param captchaId 验证码ID
     * @return 验证码信息
     */
    Captcha selectByCaptchaId(@Param("captchaId") String captchaId);

    /**
     * 标记验证码为已使用
     * 
     * @param captchaId 验证码ID
     * @return 影响行数
     */
    int markAsUsed(@Param("captchaId") String captchaId);

    /**
     * 清理过期验证码
     * 
     * @return 影响行数
     */
    int cleanExpiredCaptcha();

    /**
     * 检查IP地址验证码发送频率
     * 
     * @param ipAddress IP地址
     * @param businessType 业务类型
     * @param minutes 时间范围（分钟）
     * @return 验证码数量
     */
    int countByIpAndType(@Param("ipAddress") String ipAddress, 
                        @Param("businessType") Integer businessType, 
                        @Param("minutes") Integer minutes);

    /**
     * 检查目标验证码发送频率
     * 
     * @param target 目标（手机号/邮箱）
     * @param businessType 业务类型
     * @param minutes 时间范围（分钟）
     * @return 验证码数量
     */
    int countByTargetAndType(@Param("target") String target, 
                            @Param("businessType") Integer businessType, 
                            @Param("minutes") Integer minutes);
} 